<?php

/**
 * Created by PhpStorm.
 * User: FDG367
 * Date: 2017/9/18
 * Time: 12:54
 */
namespace api\models;

use common\helps\tools;
use yii;
class InterfaceUtil extends yii\base\Model
{

    const APPID ='694db2645b3f69a8';                      //appID
    const APPSECRET ='r5e2t85tyu142u665698fzu';   //秘钥

    /**
     * @param 除去数组中的空值和签名参数
     * @param $para 签名参数组
     * @return 去掉空值与签名参数后的新签名参数组
     */
    public  static function filterParam($para)
    {
        $para_filter = array();
        while (list ($key, $val) = each ($para)) {
            switch($key){
				case 'api_id':		//公钥
				case 'item_no':		//物料号
				//case 'timestamp':	//时间搓15秒内
				/*case 'list_price':	//商品原价
				case 'item_price':	//商品售价
				case 'item_country'://国别
				case 'item_sort':	//商品分类
				case 'itemtype':	//商品大类*/
					$para_filter[$key] = $para[$key];
					break;
				default:
					continue;
					break;
			}
        }
        return self::sortParam($para_filter);
    }

    /**
     * 对数组排序
     * @param $para 排序前的数组
     * return 排序后的数组
     */
    public static function sortParam($para)
    {

       //	ksort($para);
        //reset($para);
        return $para;
    }

    /**
     * 把数组所有元素，按照"参数=参数值"的模式用"&"字符拼接成字符串
     * @param $para 需要拼接的数组
     * return 拼接完成以后的字符串
     */

    public static function genLinkstring($para)
    {
       /* $arg  = "";
        while (list ($key, $val) = each ($para)) {
            $arg.=$key."=".$val."&";
        }
        //去掉最后一个&字符
        $arg = substr($arg,0,count($arg)-2);

        //如果存在转义字符，那么去掉转义
        if(get_magic_quotes_gpc()){$arg = stripslashes($arg);}*/
		//return tools::my_json_encode($para);
		return json_encode($para,JSON_UNESCAPED_UNICODE);
    }
    /**
     * @param 获取签名
     * @param $sort_para 签名数组
     * @return 签名字符串
     */
    public static  function getSign($sort_para){

        //加密数据转化为字符串
        $sort_para = array_map(function($n){ return strval($n); }, $sort_para);

        //排序
        $sort_para = self::filterParam($sort_para);

        //把数组所有元素，按照"参数=参数值"的模式用"&"字符拼接成字符串
        $prestr = self::genLinkstring($sort_para);

        //返回数据
		//print_r($prestr.self::APPSECRET);exit;
        return sha1($prestr.self::APPSECRET);
    }

}
?>
